<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />

    <title></title>

  </head>
  <body>
  
 
  </body>
</html>
<script>
    //  用setTimeout来模拟异步
    // function fn(timer,params){
    //     return new Promise((resolve,reject)=>{
    //         setTimeout(()=>{
    //             resolve(params)
    //         },timer)
    //     })
    // }
    // async function test(){
    //     let result1 = await fn(2000,'001')
    //     // await 本身就是等待的意思 await后面可以写任意的js表达式  他会等待await后面的代码执行，await后面的代码什么时候执行完，什么时候在往下执行
    //     console.log(result1);
    //     console.log('我啥时候会打印');
    //     let result2 = await fn(1000,'002')
    //     console.log(result2);
    //     let result3 = await fn(500,'003')
    //     console.log(result3);
    // }
    // test()
    // 以上执行的顺序是  001  002  003

    // async await  如何捕获异常 如何抛出错误   可以用try catch 来捕获

    // async  和await的返回值依然是一个promise对象 






    
    function fn(){
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve(10)
                // reject('hhh')
            },1000)
        })
    }
    function fn1(){
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                // resolve(20)
                reject('ooo')
            },2000)
        })
    }
    //    没有用try 和catch
    // async function test(){
    //    await Promise.all([fn(),fn1()]).then(res=>{
    //     console.log(res);
    //    }).catch(err=>{
    //     console.log(err);
    //    })
    // }
    // test()
    // 这里用了try和catch
    async function test(){
       try{
          let res1 = await Promise.all([fn(),fn1()])
          return res1
       } catch(err){
        //  console.log(err);
         return err

       }
    }
    test().then(res=>{
        console.log(res);
    }).catch(err=>{
        console.log(err);
    })
    // console.log(test());



</script>
